import axios from 'axios'
import {useAdminStore} from "@/stores/admin.js";
import {ElMessage} from "element-plus";

const admin = useAdminStore()

//本地加上前缀，线上去掉前缀使用nginx代理
export const baseURL = import.meta.env.MODE === 'production' ? '' : import.meta.env.VITE_APP_BASE_URL;

const instance = axios.create({})

//导出默认请求
export default (url = '', data = {}, method = 'get', headers = {}) => {
    return new Promise((resolve, reject) => {
        //只要是/开头的url，自动拼接baseURL
        if (/^\//.test(url)) {
            url = "/api" + url;
        }
        instance.request({
            method: method,
            url: url,
            params: method === 'get' ? data : {},
            data: method === 'post' || method === 'put' ? data : {},
            headers: headers
        }).then(res => {
            resolve(res.data)
        }).catch(err => {
            ElMessage.error(err.message)
            reject(err)
        })
    })
}

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    if (response.data.code === 401) {
        setTimeout(() => {
            admin.resetAdmin()
            window.location.href = "/login"
        }, 500)
    }
    return response;
}, function (error) {
    console.log(34123421)
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    if (admin.admin.token) {
        config.headers.Authorization = `Bearer ${admin.admin.token}`
    }
    return config;
});
